home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 23 / AMIGAplus Sonderheft 23 (2000)(Falke)(DE)[!].iso / Tools / Text-Viewer / Notes / deutsch / BassSchlüssel.rexx < prev    next >
OS/2 REXX Batch file  |  1999-11-06  |  42KB  |  1,359 lines

  1. /* Unterprogramm zu Noten.pprx */
  2.  
  3. signal on halt
  4. signal on break_c
  5. signal on break_e
  6. signal on break_d
  7. call ppm_SetStyle(N)
  8.  
  9. noteneingabe:
  10.     /* Kleinster Notenabstand */
  11.     sysart = "Notensystemart:2"
  12.     systemart = ppm_Getform("Bitte noch einmal die gewählte Systemart eingeben. (2, 1v oder 1b)", 3, sysart)
  13.     select
  14.     when systemart == '2' then zdist = 4
  15.     when systemart == '1v' then zdist = 2
  16.     when systemart == '1b' then zdist = 2
  17.     otherwise noteneingabe()
  18.     end
  19.     zdist2 = zdist-2
  20.     xgrdform = "(1,2,4,8 oder 16)"
  21.     xgrd = ppm_GetForm("Bitte für den kleinsten Notenwert eingeben ... (NICHTS=ABBRUCH)", 3, xgrdform)
  22.     if xgrd == '' then  exit_msg("Abbruch")
  23.     select
  24.      when xgrd == '1' then xg =0.7
  25.      when xgrd == '2' then xg =1.4
  26.      when xgrd == '4' then xg =2.8
  27.      when xgrd == '8' then xg =5.6
  28.      when xgrd == '16' then xg =11.2
  29.      otherwise notenwert()
  30.     end
  31.  
  32.    /* Punktgröße der Noten */
  33.    notepkt = 26
  34.    call ppm_SetJustification(0)
  35.  
  36.    zz = 0 /* Zeilenzähler */
  37.    notex = 0
  38.    notey = 0
  39.    page = ppm_CurrentPage()
  40.  
  41. clickpos:
  42.    res = ppm_GetUserText(2, "Manuell oder an Box ausrichten ? m/b")
  43.    if res == 'M' then res = 'm'
  44.    if res == 'B' then res = 'b'
  45.  select
  46.    when res == 'm' then
  47.      do
  48.        clickpos = ppm_GetClickPosition("Bitte die Stelle anklicken wo ich beginnen soll...")
  49.        if clickpos == 0 then
  50.            do
  51.            exit_msg("Falsche Eingabe !! ENDE !!")
  52.            end
  53.        else
  54.            do
  55.            notey = word(clickpos, 2)
  56.            notex = word(clickpos, 1)
  57.            if notex < 2.5 then notex = 2.5
  58.            xw = notex
  59.            yw = notey
  60.            if systemart ~= '2' then
  61.             do
  62.              if notey <= 3.3  then zz= 0   /* zz ist ZeilenZähler */
  63.              if ((notey > 3.5)&(notey < 5.3)) then zz = 2
  64.              if ((notey > 5.5)&(notey < 7.3)) then zz = 4
  65.              if ((notey > 7.5)&(notey < 9.3)) then zz = 6
  66.              if ((notey > 9.5)&(notey < 11.3)) then zz = 8
  67.              if ((notey > 11.5)&(notey < 13.3)) then zz = 10
  68.              if ((notey > 13.5)&(notey < 15.3)) then zz = 12
  69.              if ((notey > 15.5)&(notey < 17.3)) then zz = 14
  70.              if ((notey > 17.5)&(notey < 19.3)) then zz = 16
  71.              if ((notey > 19.5)&(notey < 21.3)) then zz = 18
  72.              if ((notey > 21.5)&(notey < 23.3)) then zz = 20
  73.              if ((notey > 23.5)&(notey < 25.3)) then zz = 22
  74.              if notey > 25.3 then noteneingabe()
  75.             end
  76.            else
  77.             do
  78.              if notey <= 3.3  then zz= 0   /* zz ist ZeilenZähler */
  79.              if ((notey > 3.5)&(notey < 5.3)) then zz = 4
  80.              if ((notey > 5.5)&(notey < 11.3)) then zz = 8
  81.              if ((notey > 11.5)&(notey < 15.3)) then zz = 12
  82.              if ((notey > 15.5)&(notey < 19.3)) then zz = 16
  83.              if ((notey > 19.5)&(notey < 23.3)) then zz = 20
  84.              if notey > 25.3 then noteneingabe()
  85.             end
  86.            end
  87.      end
  88.    when res == 'b' then
  89.       do
  90.         clickbox = ppm_ClickOnBox("Bitte eine Box anklicken, an der Stelle, wo es weitergeht ...")
  91.         pos = ppm_GetBoxPosition(clickbox)
  92.         notex = word(pos, 1)
  93.         notey = word(pos, 2)
  94.         xw = notex
  95.         yw = notey
  96.         call ppm_BoxAtPosn(notex, notey, page)
  97.         if systemart ~= '2' then
  98.          do
  99.           if notey <= 3.3  then zz= 0   /* zz ist ZeilenZähler */
  100.           if ((notey > 3.5)&(notey < 5.3)) then zz = 2
  101.           if ((notey > 5.5)&(notey < 7.3)) then zz = 4
  102.           if ((notey > 7.5)&(notey < 9.3)) then zz = 6
  103.           if ((notey > 9.5)&(notey < 11.3)) then zz = 8
  104.           if ((notey > 11.5)&(notey < 13.3)) then zz = 10
  105.           if ((notey > 13.5)&(notey < 15.3)) then zz = 12
  106.           if ((notey > 15.5)&(notey < 17.3)) then zz = 14
  107.           if ((notey > 17.5)&(notey < 19.3)) then zz = 16
  108.           if ((notey > 19.5)&(notey < 21.3)) then zz = 18
  109.           if ((notey > 21.5)&(notey < 23.3)) then zz = 20
  110.           if ((notey > 23.5)&(notey < 25.3)) then zz = 22
  111.           if notey > 25.3 then noteneingabe()
  112.          end
  113.         else
  114.          do
  115.           if notey <= 3.3  then zz= 0   /* zz ist ZeilenZähler */
  116.           if ((notey > 3.5)&(notey < 5.3)) then zz = 4
  117.           if ((notey > 5.5)&(notey < 11.3)) then zz = 8
  118.           if ((notey > 11.5)&(notey < 15.3)) then zz = 12
  119.           if ((notey > 15.5)&(notey < 19.3)) then zz = 16
  120.           if ((notey > 19.5)&(notey < 23.3)) then zz = 20
  121.           if notey > 25.3 then noteneingabe()
  122.          end
  123.         if notex <= 1 then
  124.         do
  125.           noteneingabe()
  126.         end
  127.       end
  128.    otherwise clickpos()
  129.  end
  130.  
  131.    /* Zeigerbox */
  132.  
  133.    zbid = ppm_CreateBox(notex, zz+zdist2+0.5, 0.3, 1, 0)
  134.    call ppm_SetSize(26)
  135.    zbn = ppm_GetBoxName(zbid)
  136.    call ppm_TextIntoBox(zbn, '5')
  137.  
  138. notenwert:
  139.  
  140.    do forever
  141.            cr = '0a'x
  142.            form = "Wert Name ['A'ufl.]"
  143.            call ppm_SetBoxPosition(zbid, notex, zz+zdist2+0.5)
  144.            call ppm_UpdateScreen()
  145.            eingabe = ppm_GetForm("Bitte für die Noten eingeben ...(nichts=Abbruch)", 9, form)
  146.            if eingabe == '' then
  147.            do
  148.             call ppm_DeleteBox(zbid)
  149.             exit_msg()
  150.            end
  151.            nw = word(eingabe, 1)
  152.            if nw == 'P' then nw = 'p'
  153.            nn = word(eingabe, 2)
  154.            al = word(eingabe, 3)
  155.            if al == 'A' then al = 'a'
  156.            IF nw == 'D' then nw = 'd'
  157.            if nw == 'LEFT' then nw = 'left'
  158.            if nw == 'L' then nw = 'l'
  159.            if nw == 'T' then nw = 't'
  160.            if nn == 'T' then nn = 't'
  161.            if nw == "NEU" then nw = "neu"
  162.  
  163.  
  164.             select
  165.               when nn=='DB1' then nn = 'Db1'
  166.               when nn=='EB1' then nn = 'Eb1'
  167.               when nn=='GB1' then nn = 'Gb1'
  168.               when nn=='AB1' then nn = 'Ab1'
  169.               when nn=='DB2' then nn = 'Db2'
  170.               when nn=='EB2' then nn = 'Eb2'
  171.               when nn=='GB2' then nn = 'Gb2'
  172.               when nn=='AB2' then nn = 'Ab2'
  173.               when nn=='DB3' then nn = 'Db3'
  174.               when nn=='EB3' then nn = 'Eb3'
  175.               when nn=='GB3' then nn = 'Gb3'
  176.               otherwise NOP
  177.             end
  178.  
  179.     /* x-Abstände der Noten zueinander */
  180. auswahl:
  181.      select
  182.       when nw == 's' then
  183.           do
  184.           xw = xg/16
  185.           nw='x'
  186.           yv = 0
  187.           end
  188.       when nw  == 'S' then
  189.           do
  190.           xw = xg/16
  191.           nw='X'
  192.           yv = 0.47
  193.           end
  194.       when nw == 'a' then
  195.           do
  196.           xw = xg/8
  197.           nw='e'
  198.           yv = 0
  199.           end
  200.       when nw == 'A' then
  201.           do
  202.           xw = xg/8
  203.           nw='E'
  204.           yv = 0.47
  205.           end
  206.       when nw == 'v' then
  207.           do
  208.           xw = xg/4
  209.           nw='q'
  210.           yv = 0
  211.           end
  212.       when nw == 'V' then
  213.           do
  214.           xw = xg/4
  215.           nw='Q'
  216.           yv = 0.47
  217.           end
  218.       when nw == 'h' then
  219.           do
  220.           xw = xg/2
  221.           yv = 0
  222.           end
  223.       when nw == 'H' then
  224.           do
  225.           xw = xg/2
  226.           yv = 0.47
  227.           end
  228.       when nw == 'g' then
  229.           do
  230.           xw = xg
  231.           nw='w'
  232.           yv = 0
  233.           end
  234.       when nw == 'G' then
  235.           do
  236.           xw = xg
  237.           nw='W'
  238.           yv = 0.47
  239.           end
  240.  
  241.      /* Sprung an den Anfang der Zeile */
  242.       when nw == 'left' then
  243.           do
  244.            call ppm_SetPagePosition(0, zz+zdist2+0.5)
  245.           end
  246.  
  247.      /* Punkt nach der Note - muß als erstes eingegeben werden falls gewünscht
  248.         den nötigen Freiraum mit "sp" eingeben */
  249.  
  250.       when nw == 'pk' then
  251.           do
  252.             if notex < 3 then
  253.             do
  254.               notex = bakx
  255.               zz = zz - zdist
  256.               call ppm_SetSize(25)
  257.               box#id = ppm_CreateBox(notex+0.4, yw+zz+0.26-yv, 0.3, 0.9, 0)
  258.               call ppm_SetSize(20)
  259.               call ppm_TextIntoBox(box#id, 'd')
  260.             end
  261.             else
  262.             do
  263.               call ppm_SetSize(25)
  264.               box#id = ppm_CreateBox(notex-xw+0.4, yw+zz+0.26-yv, 0.3, 0.9, 0)
  265.               call ppm_SetSize(20)
  266.               call ppm_TextIntoBox(box#id, 'd')
  267.             end
  268.